home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * PAP.H Definitions for Printer Access Protocol *
- * *
- ************************************************************************/
-
-
- #ifndef __APPLETALK__
- #include <appletalk.h>
- #endif
-
- #if 0
-
- #define PAP_OPEN_TIMEOUT 2*60 /* 2 seconds */
- #define PAP_OPEN_RETRIES 5 /* as per spec */
-
- #define PAP_CLOSE_TIMEOUT 5*60 /* 5 seconds */
- #define PAP_CLOSE_RETRIES 3 /* */
-
- #define PAP_CONNECTION_TIMEOUT 2*60*60 /* 2 minutes */
- #define PAP_TICKLE_TIMEOUT 60*60 /* 1 minute */
- #define PAP_TICKLE_RETRIES 255 /* retry count of infinity */
-
- #define PAP_READ_TIMEOUT 15*60 /* 15 seconds */
- #define PAP_READ_RETRIES 255 /* retry count of infinity */
-
- #define PAP_ARBITRATION_TIME 2*60 /* two seconds */
-
- #define PAP_SHUT_WRITE 0x01
- #define PAP_SHUT_READ 0x02
- #define PAP_SHUT_ALL 0x04
-
- #endif
-
- #define PAPSegSize 512
- #define min_PAPpkt_size (lapSize+ddpSize+atpSize)
-
-
- enum{ /* PAP message codes */
- papOpenConn = 1,
- papOpenConnReply,
- papSendData,
- papData,
- papTickle,
- papCloseConn,
- papCloseConnReply,
- papSendStatus,
- papStatusReply
- };
-
-
- typedef struct PAPStatusRec
- {
- Byte atpRSkt; /* responding socket */
- Byte flowQ; /* flow quantum */
- Word result; /* result of operation */
- Str255 statusStr; /* the status string */
- } PAPStatusRec, *PAPStatusPtr;
-
- #if 0
- typedef struct SendDataCredit
- {
- Boolean valid; /* is this a valid credit record */
- Byte socket; /* which socket is it for */
- Word transID; /* transaction identifier for this credit */
- integer credit;
- } SDC;
-
- typedef struct PAPWriteRecord
- {
- Boolean valid;
- Boolean active;
- BDSElement bds[8];
- ATPParamBlock abr;
- integer *wstate; /* also called comp */
- integer cno;
- } PWR;
-
- typedef struct PAPReadRecord
- {
- integer valid;
- BDSElement bds[8];
- ATPParamBlock abr;
- integer *eof;
- integer *rstate; /* also called comp */
- integer *size;
- integer numBDS;
- } PRR;
-
-
- typedef struct PAP_Socket
- {
- integer active; /* active flag */
- integer state; /* state of the socket */
-
- integer rRSkt; /* remote responding socket */
- integer rFlowQ; /* remote flow quantum */
- integer papUSeq; /* remote pap data request sequence used */
- integer papRSeq; /* remote pap data request sequence received */
-
- integer flowQ; /* our flow quantum */
- integer papSeq; /* our pap data request sequence */
- integer papRSkt; /* our responding socket */
-
- Byte connID; /* connection ID number */
-
- PRR prr; /* read request */
- PWR pwr; /* write request */
- SDC sdc; /* outstanding sdc */
-
- ATPParamBlock requestAbr;
- integer reqActive;
-
- ATPParamBlock abr;
- BDSElement bds[1];
-
- LongInt wtime; /* last tickle time */
- PAPStatusRec po, por;
- PAPStatusPtr status;
- integer *ostate;
-
- integer tstate;
-
- AddrBlock addr;
- Word transID;
- } PAP_Socket;
-
- typedef struct gnj_queue
- {
- QElemPtr qLink;
- integer qType;
-
- integer used_entry;
- PAP_Socket *ps;
- } gnjQElem, *gnjQElemPtr;
-
- typedef struct PAP_S_Socket
- {
- integer active;
- integer state;
- integer arbState;
- integer resskt;
- integer flowQ;
- PAPStatusPtr status;
- ATPParamBlock abr;
- NamesTableEntry name;
- QHdr gnj_q;
- PAPStatusRec pap;
- } PAP_S_Socket;
-
- #endif
-
- typedef struct {
- Byte connID; /* connection ID */
- Byte PAPtype; /* type of PAP packet */
- union {
- struct {
- Byte eof; /* eof in data (Tresp) */
- Byte unused; /* */
- } std;
- Word seqNo; /* send data sequence number */
- } other;
- } PAPUserBytes;
-
- #if 0
-
- #define PAP_UNUSED -1
- #define PAP_BLOCKED 0
- #define PAP_UNBLOCKED 1
- #define PAP_WAITING 2
- #define PAP_ARBITRATE 3
-
- #define PAP_CLOSED 0
- #define PAP_OPENED 1
- #define PAP_INACTIVE 3
- #define PAP_OPENING 4
- #define PAP_GNJOPENING 5
- #define PAP_GNJFOUND 6
-
- #define nextPAPseq(x) ( (x) = ((++(x) % 65535) == 0 ) ? 1 : (x) % 65535 )
-
- #define NUMPAP 6
- #define NUMSPAP 6
-
- #endif
-
-
- /* Routines for PAP common to servers and clients */
- Handle PAPLoad(void);
- OSErr PAPUnload(void);
- OSErr PAPRead(integer refNum, Ptr data, integer *size,
- integer *eof, integer *rstate);
- OSErr PAPWrite(integer refNum, Ptr data, integer size,
- integer eof, integer *wstate);
- OSErr PAPClose(integer refNum);
-
- #if 0
- /* Routines for PAP for servers */
- OSErr SLInit(integer *sRef, EntityName *printerName,
- integer flowQuantum, PAPStatusRec *status);
- OSErr SLClose(integer sRef);
- OSErr PAPRegName(integer sRef, EntityPtr printer);
- OSErr PAPRemName(integer sRef, EntityPtr printer);
- OSErr GetNextJob(integer sRef, integer *refNum, integer *jstate);
- OSErr HeresStatus(integer sRef, PAPStatusRec *status);
- #endif
-
- /* Routines for PAP for clients */
- OSErr PAPStatus(EntityPtr printer,
- PAPStatusRec *status, AddrBlock *prtAddr);
- OSErr PAPOpen(integer *refNum, EntityPtr printer,
- integer flowQuantum, PAPStatusRec *status, integer *ostate);
-